package com.efuture.reflect;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

/**
 * @ClassNAME GetFiled
 * @Description 通过反射获取Filed
 * @Author zhaoshanshan
 * @Date 2021/9/11 8:40 下午
 * @Version 1.0
 */
public class GetFiled {

    public static void main(String[] args) {
        try{
            //反射Student类
            Class c = Class.forName("com.efuture.reflect.Student");
            //获取完整类名
            System.out.println("完整类名:"+c.getName());//com.efuture.reflect.Student
            //获取简单类名
            System.out.println("简单类名:"+c.getSimpleName());//Student
            //获取Student类public属性
            Field[] fields = c.getFields();
            System.out.println("fields.length的值:"+fields.length);//1
            //获取Student类所有属性
            Field[] declaredFields = c.getDeclaredFields();
            System.out.println("declaredFields.length的值:"+declaredFields.length);//4
            //遍历属性
            for(Field f:declaredFields){
                System.out.println(f.getName());//获取属性的名称
                System.out.println(f.getGenericType());//获取属性的类型
                //获取属性的修饰符号
                int modifier  = f.getModifiers();
                System.out.println(Modifier.toString(modifier));
            }

        }catch (Exception e){
            e.getStackTrace();
        }
    }
}
class Student{
    private String name;
    protected int no;
    public String sex;
    int age;
}